home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / metamail / contrib / ServiceMail / src / pdinq / getdate / getdate.y < prev    next >
Encoding:
Text File  |  1993-03-15  |  1.4 KB  |  67 lines

  1. %token ID MONTH DAY MERIDIAN NUMBER UNIT MUNIT SUNIT ZONE DAYZONE
  2. %{
  3. #include "datedcl.h"
  4. %}
  5.  
  6. %%
  7. timedate:         /* empty */
  8.     | timedate item;
  9.  
  10. item:    tspec =
  11.         {timeflag++;}
  12.     | zone =
  13.         {zoneflag++;}
  14.     | dtspec =
  15.         {dateflag++;}
  16.     | dyspec =
  17.         {dayflag++;}
  18.     | rspec =
  19.         {relflag++;};
  20.  
  21. tspec:    NUMBER MERIDIAN =
  22.         {hh = $1; mm = 0; ss = 0; merid = $2;}
  23.     | NUMBER ':' NUMBER =
  24.         {hh = $1; mm = $3; merid = 24;}
  25.     | NUMBER ':' NUMBER MERIDIAN =
  26.         {hh = $1; mm = $3; merid = $4;}
  27.     | NUMBER ':' NUMBER ':' NUMBER =
  28.         {hh = $1; mm = $3; ss = $5; merid = 24;}
  29.     | NUMBER ':' NUMBER ':' NUMBER MERIDIAN =
  30.         {hh = $1; mm = $3; ss = $5; merid = $6;};
  31.  
  32. zone:    ZONE =
  33.         {ourzone = $1; daylight = STANDARD;}
  34.     | DAYZONE =
  35.         {ourzone = $1; daylight = DAYLIGHT;};
  36.  
  37. dyspec:    DAY =
  38.         {dayord = 1; dayreq = $1;}
  39.     | NUMBER DAY =
  40.         {dayord = $1; dayreq = $2;};
  41.  
  42. dtspec:    NUMBER '/' NUMBER =
  43.         {month = $1; day = $3;}
  44.     | NUMBER '/' NUMBER '/' NUMBER =
  45.         {month = $1; day = $3; year = $5;}
  46.     | MONTH NUMBER =
  47.         {month = $1; day = $2;}
  48.     | MONTH NUMBER ',' NUMBER =
  49.         {month = $1; day = $2; year = $4;}
  50.     | NUMBER MONTH NUMBER =
  51.                 { month=$2; day=$1; year=$3;};
  52. rspec:    NUMBER UNIT =
  53.         {relsec +=  60L * $1 * $2;}
  54.     | NUMBER MUNIT =
  55.         {relmonth += $1 * $2;}
  56.     | NUMBER SUNIT =
  57.         {relsec += $1;}
  58.     | UNIT =
  59.         {relsec +=  60L * $1;}
  60.     | MUNIT =
  61.         {relmonth += $1;}
  62.     | SUNIT =
  63.         {relsec++;};
  64. %%
  65.  
  66. #include "getdate.h"
  67.